package com.yike.common.Response;


import lombok.Data;

import java.io.Serializable;
import java.util.List;

@Data
public class LklPayQueryResponse implements Serializable {
    private static final long serialVersionUID = -574854970678475448L;
    // 商户信息
    private String merchantNo;        // 商户号 M String(32) 拉卡拉分配的商户号（请求绕口中商户号）
    private String outTradeNo;       // 商户请求流水号 M String(32) 请求中的客户请京东号
    private String tradeNo;          // 拉卡拉商户订单号 M String(32) 拉卡拉生成的交易流水号
    private String logNo;            // 拉卡拉对账单流水号 M String(14) trade no的后14位

    // 交易类型
    private String tradeMainType;        // 交易大类 C PREORDER-主扫，MICROPAY-被扫，REFUND-退款，CANCEL-撤销，无-其它类型
    private String splitAttr;        // 抮异量性 C String(1) 只有及及各单交易时会出现：M-上单，s-子单

    // 账户信息
    private String accTradeNo;       // 账户端交路和订单 M String(32) 账户端交易流水
    private String accountType;      // 钱包类型 M String(32) 微信：WECHAT 支付宝：ALIPAY 银联：UQRCODEPAY 翼支付: BESTPAY 苏宁易付宝: SUNING

    // 交易状态
    private String tradeState;      // 交易状态 M String(16)INIT-初始化 CREATE-下单成功 SUCCESS-交易成功 FAIL-交易失败 DEAL-交易处理中 UNKNOWN-未知状态 CLOSE-订单关闭 PART_REFUND-部分退款 REFUND-全部退款(或订单被撤销）
    private String tradeStateDesc;  // 交易状态描述 C String(256) 交易状态描述

    // 金额信息
    private String totalAmount;      // 订单金额 M String(12) 数字数字呈字将
    private String payerAmount;      // 付款人实付金额 C String(12) 款人套付金额，单位分
    private String accSettleAmount; // 账户端应结订单金额 C String(12) 账户端应结订单金额，单位分
    private String accMdiscountAmount; // 商户侧优惠金额（账户端）

    // 枚举定义
    public enum TradeType {
        PREORDER("PREORDER", "主扫"),
        MICROPAY("MICROPAY", "被扫"),
        REFUND("REFUND", "退款"),
        CANCEL("CANCEL", "撕掉"),
        OTHER("OTHER", "其他类型");

        private String code;
        private String desc;

        TradeType(String code, String desc) {
            this.code = code;
            this.desc = desc;
        }

    }

    public enum AccountType {
        WECHAT("WECHAT", "微信"),
        ALIPAY("ALIPAY", "支付宝"),
        UQRCODEPAY("UQRCODEPAY", "银联"),
        SUNING("SUNING", "苏宁");

        private String code;
        private String desc;

        AccountType(String code, String desc) {
            this.code = code;
            this.desc = desc;
        }

        // getter方法
    }

    public enum TradeStatus {
        INIT("INIT", "初始化"),
        CREATE("CREATE", "下单成功"),
        SUCCESS("SUCCESS", "交易成功"),
        FAIL("FAIL", "交易失败"),
        DEAL("DEAL", "处理中"),
        RETURN("RETURN", "退货"),
        PART_REFUND("PART_REFUND", "部分退款"),
        REFUND("REFUND", "全部退款");

        private String code;
        private String desc;

        TradeStatus(String code, String desc) {
            this.code = code;
            this.desc = desc;
        }

    }

}
